home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
ASSEMBLE
/
0572.ZIP
/
ASMZ80.DOC
< prev
next >
Wrap
Text File
|
1987-04-09
|
13KB
|
284 lines
;ASMZ80 - This is a basic z80 cross assembler which I wrote. The main things
;It dosen't do are:-
;No include files , No macros, output is an intel standard hex file.
;source and output files are in the same directory.
;The thing is fairly bug free, I have actually used it to produce working
;Z80 programs.
;the good things about it are:-
;It uses fairly standard zilog mnemonics, it handles smart typed equates
;you can equate any type of operand.
;most of what you need to know is indicated below, errors are output to the
;screen during assembly, error lines are preceded by a letter or letters
;indicating the error, The ones I remember are given below (gawd what do
;you expect for free? documentation or something?)
;w - general syntax error (WHAT)
;n - instruction error the assembler didn't know the instruction
;b - byte value error (to big, slight bug with -ve numbers, see below)
;r - range error for releative jumps
;p - phasing error the location counter changed between passes - tricky one
; usually due to defining storage (DEFS) with a value defined later on.
;u - undefined symbol (I think)
;m - multiply defined symbol
;there may be some others aswell!
;invoke assembler like asmz80 [-l] [-n] filename
;file must have .z80 extension
;-l means generate a list file (with .lst extension)
;-n means don't generate a hex file.
; Author Terry Harris....... 1986
;Plough through this lot to understand!
;input can be upper or lower case but case is significant in symbols.
;expression evaluation is always left to right, () can be used to change
;the order (but be careful you don't confuse the assembler about memory
;references e.g.
0000 3A1900 42 ld a,(3+2)*(3+2)
;try
0003 3E19 45 ld a,0+(3+2)*(3+2)
;if thats what you mean
;divide is indicated by %
0005 0A 51 db 100%10
;and unary not by !
0006 FE 55 db !1
0007 F0 56 db !0fh
;and and or are & and |
0008 83 60 db 3|80h
0009 AA 61 db 0ffh&0aah
;you can do smart equates
0007 65 tryone equ (IX+7)
000A DD7E07 66 ld a,tryone
;you can do binary,hex and octal numbers aswell (default is decimal)
000D AA 70 bin db 010101010i
000E 3F 71 oct db 077q
000F F0 72 hex db 0f0h
;the location counter is represented by *
0010 76 freddy equ *
0010 1000 78 dw freddy
0012 80 ds *%256+1*256-* ;this put you on the next page boundary
;the only slight bug I know about is using numbers less than -127 as bytes
0100 82 84 db -126
0101 81 85 db -127
0102 80 86 db -128
0103 7F 87 db -129
;however you can get round it by saying
0104 7F 90 db -129+256
;No maybe I did get round to fixing this one!
;maybe another slight bug
0105 61 95 db 'a'
0106 616263 96 db 'abc'
w 0109 610001 97 db 'a'+1
;arithmetic with ascii constants in DB's don't work
;the only listing control is eject like
010C 102 eject
; try LIST and NOLIST aswell
;oops forget another one
;
;you can use OFFSET to offset the code in the output file for eprom blowing
010C 107 OFFSET 4000h ;the hex file will start 4000h higher than the
010C 108 ;real location.
1234 111 ORG 1234h
1234 112 ;instructions.
1234 FD3406 113 START INC (IY+2*3)
;oops another slight bug the assembler can't tell the following instruction
;is duff
1237 DD3400 116 inc (IY+IX)
123A 00 117 NOP
123B 8F 118 ADC A,A
123C 8E 119 ADC A,(HL)
123D 89 120 ADC A,C
123E 88 121 ADC A,B
123F CE0C 122 ADC A,12
1241 ED4A 123 ADC HL,BC
1243 ED5A 124 ADC HL,DE
1245 ED6A 125 ADC HL,HL
1247 ED7A 126 ADC HL,SP
1249 87 127 ADD A,A
124A 01D204 128 LD BC,1234
124D 02 129 LD (BC),A
124E 03 130 INC BC
124F 04 131 INC B
1250 05 132 DEC B
1251 060C 133 LD B,12
1253 07 134 RLCA
1254 08 135 EX AF,AF'
1255 09 136 ADD HL,BC
1256 0A 137 LD A,(BC)
1257 0B 138 DEC BC
1258 0C 139 INC C
1259 0D 140 DEC C
125A 0E0C 141 LD C,12
125C 0F 142 RRCA
125D 10FE 143 DJNZ *
125F 18FE 144 JR *
1261 28FE 145 JR Z,*
1263 20FE 146 JR NZ,*
1265 38FE 147 JR C,*
1267 30FE 148 JR NC,*
1269 20FE 149 JR NZ,*
126B E9 150 JP (HL)
126C DDE9 151 JP (IX)
126E FDE9 152 JP (IY)
1270 DA7012 153 JP C,*
1273 FA7312 154 JP M,*
1276 D27612 155 JP NC,*
1279 C37912 156 JP *
127C C27C12 157 JP NZ,*
127F F27F12 158 JP P,*
1282 EA8212 159 JP PE,*
1285 E28512 160 JP PO,*
1288 CA8812 161 JP Z,*
128B 11D204 162 LD DE,1234
128E 12 163 LD (DE),A
128F 13 164 INC DE
1290 14 165 INC D
1291 15 166 DEC D
1292 160C 167 LD D,12
1294 17 168 RLA
1295 FDCB055E 169 BIT 3,(IY+5)
1299 CBA6 170 RES 4,(HL)
129B DDCB005E 171 BIT 3,(IX+0)
129F DDCB00DE 172 SET 3,(IX)
12A3 3AD204 173 LD A,(1234)
12A6 3E0C 174 LD A,12
12A8 ED46 175 IM 0
12AA ED56 176 IM 1
12AC ED5E 177 IM 2
12AE C7 178 RST 0
12AF CF 179 RST 8
12B0 D7 180 RST 10h
12B1 DF 181 RST 18h
12B2 E7 182 RST 20h
12B3 EF 183 RST 28h
12B4 F7 184 RST 30h
12B5 FF 185 RST 38h
12B6 0601 186 LD B,1
12B8 3E01 187 LD A,1
12BA B7 188 OR A
12BB AF 189 XOR A
12BC A7 190 AND A
12BD B0 191 OR B
12BE 0604 192 LD B,4
12C0 0622 193 LD B,34
12C2 14 194 INC D
12C3 15 195 DEC D
12C4 160C 196 LD D,12
0000 198 ATHL EQU (HL)
12C6 46 199 LD B,(HL)
12C7 56 200 LD D,(HL)
12C8 77 201 LD (HL),A
12C9 70 202 LD (HL),B
12CA 70 203 LD ATHL,B
12CB 3617 204 LD ATHL,23
12CD 22D204 206 LD (1234),HL
12D0 CDD012 207 BILL CALL BILL
12D3 10FB 208 DJNZ BILL
12D5 3C 210 INC A
12D6 04 211 INC B
12D7 0C 212 INC C
12D8 14 213 INC D
12D9 1C 214 INC E
12DA 24 215 INC H
12DB 2C 216 INC L
12DC 03 217 INC BC
12DD 4F4B2054 218 DB 'OK THEN TEXT ?'
48454E20
54455854
203F
12EB 13 219 INC DE
12EC 23 220 INC HL
12ED 33 221 INC SP
12EE FD23 222 INC IY
12F0 DD23 223 INC IX
12F2 FD3405 224 INC(IY+5)
12F5 FD34FD 225 INC (IY-3)
12F8 34 226 INC (HL)
12F9 FB 227 EI
12FA F3 228 DI
12FB C3FB12 229 JP *
12FE 86 230 ADD a,(HL)
12FF D9 231 EXX
1300 EB 232 EX DE,HL
1301 76 234 HALT
1302 235 EJECT
1302 237 FRED EQU *
1302 0213 238 DW FRED
1304 0100 239 DW 1
1306 C30213 241 JP FRED
1309 87 242 ADD A,A
130A 8F 243 ADC A,A
130B FD19 244 ADD IY,DE ;A COMMENT
130D 87 245 ADD A,A
130E 80 246 ADD A,B
130F 81 247 ADD A,C
1310 82 248 ADD A,D
1311 83 249 ADD A,E
1312 84 250 ADD A,H
1313 85 251 ADD A,L
1314 E60C 252 AND 12
1316 E647 253 AND 'G'
1318 E605 254 AND 05h
131A CD1A13 256 JIM CALL JIM
131D C31A13 257 JP JIM
1320 C21A13 258 JP NZ,JIM
1323 1A13 259 DW JIM
1325 CDD204 260 CALL 1234
8100 262 org 08100h
8100 09 263 ADD HL,BC
8101 29 264 ADD HL,HL
8102 210281 265 ld hl,*
8105 87 266 ADD A,A
8106 C3D204 267 JP 1234
8109 C30C00 268 JP 12
810C C30100 269 JP 1
810F C31000 270 JP 10h
8112 80 271 ADD A,B
8113 81 272 ADD A,C
8114 86 273 ADD a,(HL)
8115 FD8600 274 ADD a,(IY)
8118 A0 275 AND B
8119 CDD204 276 CALL 1234
811C 277 END START
11 Symbols